#include "Key.h"

/**
 * Constructeur polyvalent, pouvant servir de constructeur par
 * défaut, ou pour promouvoir un entier en doublet.
 *
 * @param[in] a premier élément du doublet (défaut = 0)
 * @param[in] b second élément du doublet (défaut = 0)
 */
Key::Key( const unsigned int& a, const unsigned int& b )
  : Nombre( a ), Etat( b )
{}

/**
 * Destructeur, ne fait rien de spécial
 */
Key::~Key()
{}

/**
 * Opérateur de comparaison, permet d'ordrer une liste au besoin. La
 * comparaison se fait en deux temps : on compare premièrement le
 * champ Nombre, puis, en cas d'égalité, le champ Etat.
 *
 * @param[in] autre autre objet, avec lequel effectuer la comparaison.
 *
 * @return \e true si a < b
 */
bool Key::operator<( const Key& autre ) const
{
  if (this -> Nombre < autre.Nombre)
    return true;
  else if (this -> Nombre == autre.Nombre && this -> Etat < autre.Etat)
    return true;
  else
    return false;
}
